package com.CST.mapper.cst.ys;

import com.CST.dto.ys.SubjectSortDTO;
import com.CST.vo.ys.SubjectSortVO;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author cw
 */
@Mapper
public interface YsSubjectSortMapper {
    /**
     * 查询业务职能的预算科目
     * @return list
     */
    List<SubjectSortVO> selectBusinessList();

    /**
     * 查询管理职能的预算科目
     * @return list
     */
    List<SubjectSortVO> selectManageList();

    /**
     * 查询当前最大的排序
     * @param type
     * @return
     */
    Integer selectMaxSortIndex(Integer type);

    /**
     * 查询当前已经有排序的科目
     * @param type
     * @return
     */
    List<Long> selectNowList(Integer type);

    /**
     * 插入没有排序的预算科目
     * @param list
     */
    void insertNewSubjects(@Param("list") List<SubjectSortVO> list,@Param("type") Integer type);

    /**
     * 查询该科目的排序
     * @param subjectId
     * @param type
     * @return
     */
    Integer selectSortBySubjectIdAndType(Long subjectId, Integer type);

    /**
     * 更新排序(删除预算科目影响)
     * @param sortIndex
     * @param type
     */
    void updateSortIndex(Integer sortIndex, Integer type);

    /**
     * 删除预算科目后对应删除排序
     * @param subjectId
     * @param type
     */
    void deleteBySubjectIdAndType(Long subjectId, Integer type);

    /**
     * 拖动排序，更新当前拖动数据的排序
     * @param dto
     */
    void updateSortIndexBySubjectId(SubjectSortDTO dto);

    /**
     * 修改向下拖动的排序
     * @param dto
     */
    void updateDownwardSortIndex(SubjectSortDTO dto);

    /**
     * 修改向上拖动的排序
     * @param dto
     */
    void updateUpwardSortIndex(SubjectSortDTO dto);
}
